# 这是一个示例 Python 脚本。

# 按 Shift+F10 执行或将其替换为您的代码。
# 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。


# 导入OpenCV库
import cv2


def camera_face_detect():
    # 1. 加载Haar人脸检测模型
    face_cascade = cv2.CascadeClassifier(
        cv2.data.haarcascades + "haarcascade_frontalface_default.xml"
    )

    # 2. 打开默认摄像头（参数0表示笔记本自带摄像头，外接摄像头用1）
    cap = cv2.VideoCapture(0)

    # 3. 检查摄像头是否成功打开
    if not cap.isOpened():
        print("❌ 摄像头无法打开！请确认：1.摄像头已连接 2.无其他程序占用摄像头")
        return

    print("✅ 摄像头已打开，按键盘 'q' 键退出！")

    # 4. 循环读取摄像头帧（实时检测）
    while True:
        # 读取一帧图像（ret=是否成功，frame=当前帧图像）
        ret, frame = cap.read()
        if not ret:
            print("❌ 无法读取摄像头帧，程序退出")
            break

        # 转为灰度图
        gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

        # 检测人脸
        faces = face_cascade.detectMultiScale(
            gray_frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)
        )

        # 绘制绿色矩形框标注人脸
        for (x, y, w, h) in faces:
            cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # 显示实时检测结果（窗口标题含操作提示）
        cv2.imshow("Camera Real-Time Face Detection (Press 'q' to close)", frame)

        # 按"q"键退出循环（等待1毫秒，确保窗口流畅）
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    # 5. 释放资源（关闭摄像头+所有窗口）
    cap.release()
    cv2.destroyAllWindows()


# 调用函数执行
if __name__ == "__main__":
    camera_face_detect()